io是输入流。close()是java中的阻塞调用吗?
我试着从一个输入到另一个输入,一块一块地读。close(); 但是,main的执行被阻止。出路是什么
根据建议,我使用的代码是
if (!processed) {
System.out.println("in processed");
byte[] contents = new byte[(int) fileSplit.getLength()];
Path file = fileSplit.getPath();
FileSystem fs = file.getFileSystem(conf);
FSDataInputStream in = null;
try {
in = fs.open(file);
IOUtils.readFully(in, contents, 0, contents.length);
value.set(contents, 0, contents.length);
} finally {
System.out.println("before close stream");
IOUtils.closeStream(in);
}
processed = true;
return true;
}
System.out.println("out of processed");
return false;
}
# 1 楼答案
爪哇。木卫一。输入流。close并没有阻塞,至少API从未说过这一点。比较 输入流。阅读
和输入流。接近
至于解决您的问题,我建议使用Java7文件。阅读所有字节,忘记你的谜题